home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / m2gem106.lzh / CRYSTAL1.06 / SRC / CRYSTAL / VSCREEN.MOD < prev    next >
Encoding:
Modula Implementation  |  1992-05-28  |  3.7 KB  |  179 lines

  1. IMPLEMENTATION MODULE VScreen;
  2.  
  3. (*
  4. VDI Escape Functions for Screens.
  5.  
  6. UK __DATE__ __TIME__
  7. *)
  8.  
  9. (*IMP_SWITCHES*)
  10.  
  11. FROM VDI    IMPORT intin,ptsin,intout,v,CallVDI,CallEsc,CallVDIEsc,
  12.                    Integer,MaxInput,EOS,XY,Point;
  13. FROM PORTAB IMPORT ANYWORD,UNSIGNEDWORD;
  14. CAST_IMPORT
  15.  
  16. PROCEDURE VQChCells(    Handle : UNSIGNEDWORD;
  17.                     VAR Rows   : UNSIGNEDWORD;
  18.                     VAR Columns: UNSIGNEDWORD);
  19. BEGIN
  20.   CallEsc(1,Handle);
  21.   Rows:= intout[0];
  22.   Columns:= intout[1];
  23. END VQChCells;
  24.  
  25. PROCEDURE VExitCur(Handle: UNSIGNEDWORD);
  26. BEGIN
  27.   CallEsc(2,Handle);
  28. END VExitCur;
  29.  
  30. PROCEDURE VEnterCur(Handle: UNSIGNEDWORD);
  31. BEGIN
  32.   CallEsc(3,Handle);
  33. END VEnterCur;
  34.  
  35. PROCEDURE VCurUp(Handle: UNSIGNEDWORD);
  36. BEGIN
  37.   CallEsc(4,Handle);
  38. END VCurUp;
  39.  
  40. PROCEDURE VCurDown(Handle: UNSIGNEDWORD);
  41. BEGIN
  42.   CallEsc(5,Handle);
  43. END VCurDown;
  44.  
  45. PROCEDURE VCurRight(Handle: UNSIGNEDWORD);
  46. BEGIN
  47.   CallEsc(6,Handle);
  48. END VCurRight;
  49.  
  50. PROCEDURE VCurLeft(Handle: UNSIGNEDWORD);
  51. BEGIN
  52.   CallEsc(7,Handle);
  53. END VCurLeft;
  54.  
  55. PROCEDURE VCurHome(Handle: UNSIGNEDWORD);
  56. BEGIN
  57.   CallEsc(8,Handle);
  58. END VCurHome;
  59.  
  60. PROCEDURE VEEOS(Handle: UNSIGNEDWORD);
  61. BEGIN
  62.   CallEsc(9,Handle);
  63. END VEEOS;
  64.  
  65. PROCEDURE VEEOL(Handle: UNSIGNEDWORD);
  66. BEGIN
  67.   CallEsc(10,Handle);
  68. END VEEOL;
  69.  
  70. PROCEDURE VCurAddress(Handle: UNSIGNEDWORD;
  71.                       Row   : UNSIGNEDWORD;
  72.                       Column: UNSIGNEDWORD);
  73. BEGIN
  74.   intin[0]:= Row;
  75.   intin[1]:= Column;
  76.   CallVDIEsc(11,0,2,Handle);
  77. END VCurAddress;
  78.  
  79. PROCEDURE VCurText(    Handle: UNSIGNEDWORD;
  80.                    VAR String: ARRAY OF CHAR);
  81.  
  82. VAR i: [0..MaxInput];
  83.  
  84. BEGIN
  85.   i:= 0;
  86.   WHILE String[i] # EOS DO
  87.    intin[i]:= ORD(String[i]);
  88.    INC(i);
  89.   END;
  90.   CallVDIEsc(12,0,i,Handle); (* i - 1 + 1 = i *)
  91. END VCurText;
  92.  
  93. PROCEDURE VRvOn(Handle: UNSIGNEDWORD);
  94. BEGIN
  95.   CallEsc(13,Handle);
  96. END VRvOn;
  97.  
  98. PROCEDURE VRvOff(Handle: UNSIGNEDWORD);
  99. BEGIN
  100.   CallEsc(14,Handle);
  101. END VRvOff;
  102.  
  103. PROCEDURE VQCurAddress(    Handle: UNSIGNEDWORD;
  104.                        VAR Row   : UNSIGNEDWORD;
  105.                        VAR Column: UNSIGNEDWORD);
  106. BEGIN
  107.   CallEsc(15,Handle);
  108.   Row:= intout[0];
  109.   Column:= intout[1];
  110. END VQCurAddress;
  111.  
  112. PROCEDURE VQTabStatus(Handle: UNSIGNEDWORD): BOOLEAN;
  113. BEGIN
  114.   CallEsc(16,Handle);
  115.   RETURN intout[0] = 1;
  116. END VQTabStatus;
  117.  
  118. PROCEDURE VHardCopy(Handle: UNSIGNEDWORD);
  119. BEGIN
  120.   CallEsc(17,Handle);
  121. END VHardCopy;
  122.  
  123. PROCEDURE VDspCur(Handle: UNSIGNEDWORD;
  124.                   X     : XY;
  125.                   Y     : XY);
  126. BEGIN
  127.   ptsin[0]:= X;
  128.   ptsin[1]:= Y;
  129.   CallVDIEsc(18,1,0,Handle);
  130. END VDspCur;
  131.  
  132. PROCEDURE VRmCur(Handle: UNSIGNEDWORD);
  133. BEGIN
  134.   CallEsc(19,Handle);
  135. END VRmCur;
  136.  
  137. PROCEDURE VSPalette(Handle : UNSIGNEDWORD;
  138.                     Palette: UNSIGNEDWORD): UNSIGNEDWORD;
  139. BEGIN
  140.   intin[0]:= Palette;
  141.   CallVDIEsc(60,0,1,Handle);
  142.   RETURN intout[0];
  143. END VSPalette;
  144.  
  145. PROCEDURE VSound(Handle   : UNSIGNEDWORD;
  146.                  Frequency: UNSIGNEDWORD;
  147.                  Duration : UNSIGNEDWORD);
  148. BEGIN
  149.   intin[0]:= Frequency;
  150.   intin[1]:= Duration;
  151.   CallVDIEsc(61,0,2,Handle);
  152. END VSound;
  153.  
  154. PROCEDURE VSMute(Handle: UNSIGNEDWORD;
  155.                  Action: MutingFlags): BOOLEAN;
  156. BEGIN
  157.   intin[0]:= ORD(Action) - 1;
  158.   CallVDIEsc(62,0,1,Handle);
  159.   RETURN intout[0] = 0;
  160. END VSMute;
  161.  
  162. PROCEDURE VOffset(Handle: UNSIGNEDWORD;
  163.                   Offset: UNSIGNEDWORD);
  164. BEGIN
  165.   intin[0]:= Offset;
  166.   CallVDIEsc(101,0,1,Handle);
  167. END VOffset;
  168.  
  169. PROCEDURE VFontInit(Handle  : UNSIGNEDWORD;
  170.                     FontHigh: ANYWORD;
  171.                     FontLow : ANYWORD);
  172. BEGIN
  173.   intin[0]:= CAST(Integer,FontHigh);
  174.   intin[1]:= CAST(Integer,FontLow);
  175.   CallVDIEsc(102,0,2,Handle);
  176. END VFontInit;
  177.  
  178. END VScreen.
  179.